Caches are used to store data structures in an area of memory such that future access to that structure will be faster if the structure is found in the cache rather than having to re-calculate or re-load that structure from its original location. Because physical memory requires that a cache has a fixed, or upper bounded, size, the cache will probably get to the stage where it fills up. At that point, no more data can be stored unless data already contained within the cache is rejected.
Many types of algorithms exist to determine how this cache rejection is arranged, for example, least recently used (LRU), least frequently used (LFU), and least recently/frequently used (LRFU). LRU rejection policy requires a separate linked list to represent the recently used metric, and such list needs to be rearranged for every cache lookup in order to keep track of lookup order. LFU rejection policy rejects those objects first that are used least. An LRFU rejection policy combines an LRU rejection policy and an LFU rejection policy to eliminate the functional disadvantages of each.